Skip to content

Add "on_error_resume_next" operator.#279

Merged
AlexInLog merged 10 commits into
AlexInLog:mainfrom
tcw165:op/resume_on_error
Oct 12, 2022
Merged

Add "on_error_resume_next" operator.#279
AlexInLog merged 10 commits into
AlexInLog:mainfrom
tcw165:op/resume_on_error

Conversation

@tcw165

@tcw165 tcw165 commented Oct 10, 2022

Copy link
Copy Markdown
Contributor

No description provided.

@tcw165 tcw165 force-pushed the op/resume_on_error branch from 3070bdb to a6b1eb2 Compare October 10, 2022 16:25
@codecov

codecov Bot commented Oct 10, 2022

Copy link
Copy Markdown

Codecov Report

Merging #279 (8f32e67) into main (ef1eec6) will increase coverage by 0.00%.
The diff coverage is 100.00%.

@@           Coverage Diff           @@
##             main     #279   +/-   ##
=======================================
  Coverage   98.69%   98.70%           
=======================================
  Files         102      104    +2     
  Lines        1455     1466   +11     
=======================================
+ Hits         1436     1447   +11     
  Misses         19       19           
Impacted Files Coverage Δ
src/rpp/rpp/observables/interface_observable.hpp 100.00% <ø> (ø)
src/rpp/rpp/operators/fwd/on_error_resume_next.hpp 100.00% <100.00%> (ø)
src/rpp/rpp/operators/on_error_resume_next.hpp 100.00% <100.00%> (ø)

📣 We’re building smart automated test selection to slash your CI/CD build times. Learn more

@tcw165 tcw165 force-pushed the op/resume_on_error branch 2 times, most recently from aa84f50 to 1377faf Compare October 10, 2022 17:09
@tcw165

tcw165 commented Oct 10, 2022

Copy link
Copy Markdown
Contributor Author

@victimsnino The office ReactiveX doc names the operator catch(), and RxCpp names it on_error_resume_next(). Shall we just use catch() for consistent naming with the doc?

@github-actions

github-actions Bot commented Oct 10, 2022

Copy link
Copy Markdown
Contributor

BENCHMARK RESULTS (AUTOGENERATED)

ci-ubuntu-clang

Observable construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable construction 0.40ns 0.597253 0.67 0.40ns
Dynamic observable construction 35.06ns 35.4156 0.99 29.38ns
Specific observable construction + as_dynamic 35.13ns 37.4819 0.94 29.76ns

Observable lift

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable lift specific observer 135.50ns 142.482 0.95 351.85ns
Specific observable lift dynamic observer 167.29ns 165.304 1.01 377.12ns
Dynamic observable lift specific observer 231.37ns 220.132 1.05 405.38ns
Dynamic observable lift dynamic observer 227.60ns 268.845 0.85 396.09ns

Observable subscribe

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable subscribe specific observer 95.10ns 88.7016 1.07 352.39ns
Specific observable subscribe dynamic observer 109.24ns 104.728 1.04 356.05ns
Dynamic observable subscribe specific observer 168.71ns 179.095 0.94 402.00ns
Dynamic observable subscribe dynamic observer 171.10ns 152.769 1.12 385.62ns

Observable subscribe #2

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable subscribe lambda 91.72ns 99.0111 0.93 352.98ns
Dynamic observable subscribe lambda 167.88ns 166.069 1.01 398.55ns
Specific observable subscribe lambda without subscription 87.70ns 79.659 1.10 349.94ns
Dynamic observable subscribe lambda without subscription 169.53ns 162.5 1.04 395.55ns
Specific observable subscribe specific subscriber 51.71ns 40.9377 1.26 267.56ns
Dynamic observable subscribe specific subscriber 126.67ns 130.443 0.97 327.01ns
Specific observable subscribe dynamic observer 50.88ns 50.1847 1.01 290.66ns
Dynamic observable subscribe dynamic observer 116.04ns 125.815 0.92 318.80ns

Observer construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observer construction 0.40ns 0.45537 0.88 0.40ns
Dynamic observer construction 37.87ns 34.5068 1.10 24.99ns
Specific observer construction + as_dynamic 34.96ns 33.3381 1.05 24.67ns

OnNext

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observer OnNext 0.80ns 0.859738 0.93 0.81ns
Dynamic observer OnNext 2.41ns 2.37308 1.02 2.88ns

Subscriber construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Make subsriber 41.13ns 45.1269 0.91 72.81ns
Make copy of subscriber 19.35ns 19.5993 0.99 5.66ns
Transform subsriber to dynamic 55.05ns 46.3926 1.19 33.90ns

Subscription

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
composite_subscription create 40.57ns 48.7312 0.83 61.89ns
composite_subscription add 58.61ns 71.7614 0.82 109.14ns
composite_subscription unsubscribe 52.31ns 50.3277 1.04 28.12ns

buffer

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
buffer 321.40ns 340.735 0.94 2243.11ns
sending of values from observable via buffer to subscriber 7.64ns 8.46038 0.90 33.26ns

chains creation test

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
long non-state chain creation + subscribe 308.81ns 348.874 0.89 603.34ns
long stateful chain creation + subscribe 477.85ns 471.383 1.01 964.90ns

combine_latest

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
combine_latest construction from observable via dot + subscribe 1053.82ns 1088.8 0.97 1097.41ns
sending of values from observable via combine_latest to subscriber 30.54ns 40.0646 0.76 2.82ns

concat

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
concat 2270.93ns 2444.01 0.93 3734.40ns
concat_with 2633.42ns 2976.68 0.88 3981.09ns

distinct_until_changed

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
distinct_until_changed construction from observable via dot + subscribe 152.91ns 157.285 0.97 304.15ns
sending of values from observable via distinct_until_changed to subscriber 3.29ns 3.22067 1.02 1.61ns

first

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
first construction from observable via dot + subscribe 168.31ns 183.517 0.92 695.17ns
sending of values from observable via first to subscriber 0.78ns 0.605855 1.29 0.81ns

foundamental sources

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
empty 99.67ns 107.691 0.93 749.39ns
error 161.94ns 161.609 1.00 892.01ns
never 56.04ns 60.3559 0.93 301.31ns

from

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
from vector with int 117.91ns 115.561 1.02 808.44ns

immediate scheduler

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no any re-schedule 0.79ns 0.61998 1.27 137.39ns
re-schedule 10 times 11.27ns 13.3297 0.85 191.19ns

just

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
just send int 101.74ns 108.234 0.94 754.66ns
just send variadic 140.11ns 140.054 1.00 891.38ns

last

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
last construction from observable via dot + subscribe 223.43ns 248.269 0.90 431.55ns
sending of values from observable via last to subscriber 2.88ns 3.43426 0.84 2.01ns

map

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
map construction from observable via dot + subscribe 106.60ns 108.829 0.98 296.64ns
sending of values from observable via map to subscriber 1.15ns 0.917066 1.26 2.81ns

merge

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
merge 2196.99ns 2041.21 1.08 3591.96ns
merge_with 2568.18ns 2784.32 0.92 3962.09ns

observe_on

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
observe_on construction from observable via dot + subscribe 523.52ns 583.791 0.90 3022.55ns
sending of values from observable via observe_on to subscriber 71.03ns 68.5661 1.04 240.53ns

on_error_resume_next

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
on_error_resume_next construction from observable via dot + subscribe 20.45ns None . 11.44ns

publish_subject callbacks

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
on_next 29.00ns 29.7688 0.97 12.38ns
on_error 0.60ns 0.574209 1.05 23.00ns
on_completed 0.61ns 0.634979 0.95 0.81ns

publish_subject routines

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
construct 230.34ns 223.839 1.03 221.13ns
get_observable 32.87ns 33.754 0.97 60.06ns
get_subscriber 70.41ns 74.385 0.95 16.14ns

repeat

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
repeat construction from observable via dot + subscribe 4720.86ns 5028.88 0.94 3185.13ns

scan

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
scan construction from observable via dot + subscribe 148.94ns 158.413 0.94 363.32ns
sending of values from observable via scan to subscriber 2.01ns 2.60232 0.77 2.82ns

single-threaded locks

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no-lock increment 2.43ns 2.90699 0.83 .
mutex lock increment 21.77ns 24.031 0.91 .
spin-lock increment 10.83ns 14.506 0.75 .

skip

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
skip construction from observable via dot + subscribe 142.71ns 150.863 0.95 570.00ns
sending of values from observable via skip to subscriber 2.02ns 3.2842 0.62 2.41ns

switch_on_next

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
switch_on_next construction from observable via dot + subscribe 2664.06ns 2929.26 0.91 3290.57ns
sending of values from observable via switch_on_next to subscriber 678.91ns 736.472 0.92 791.99ns

take

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take construction from observable via dot + subscribe 222.58ns 237.4 0.94 589.11ns
sending of values from observable via take to subscriber 2.82ns 5.56491 0.51 3.22ns

take_last

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take_last construction from observable via dot + subscribe 275.10ns 315.739 0.87 627.67ns
sending of values from observable via take_last to subscriber 3.48ns 4.17903 0.83 4.18ns

take_until

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take_until construction from observable via dot + subscribe 1255.49ns 1325.08 0.95 1412.98ns
sending of values from observable via take_until to subscriber 10.85ns 13.9566 0.78 2.15ns

trampoline scheduler

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no any re-schedule 13.51ns 14.5561 0.93 204.04ns
re-schedule 10 times 37.29ns 31.5677 1.18 241.26ns
recursively schedule 10 times 1626.60ns 2051.54 0.79 6558.15ns

window

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
window 2360.49ns 2573.51 0.92 3623.76ns
sending of values from observable via window to subscriber 651.79ns 652.799 1.00 443.61ns

with_latest_from

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
with_latest_from construction from observable via dot + subscribe 1236.91ns 1375.01 0.90 1311.55ns
sending of values from observable via with_latest_from to subscriber 32.12ns 36.5508 0.88 3.65ns

ci-ubuntu-gcc

Observable construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable construction 0.33ns 0.400413 0.83 0.36ns
Dynamic observable construction 36.05ns 33.5764 1.07 25.90ns
Specific observable construction + as_dynamic 36.80ns 37.3846 0.98 22.66ns

Observable lift

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable lift specific observer 130.21ns 138.102 0.94 364.91ns
Specific observable lift dynamic observer 164.77ns 168.822 0.98 435.96ns
Dynamic observable lift specific observer 230.49ns 234.9 0.98 443.17ns
Dynamic observable lift dynamic observer 247.74ns 237.942 1.04 424.82ns

Observable subscribe

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable subscribe specific observer 97.49ns 98.5897 0.99 352.57ns
Specific observable subscribe dynamic observer 105.97ns 115.088 0.92 381.33ns
Dynamic observable subscribe specific observer 171.00ns 175.636 0.97 345.42ns
Dynamic observable subscribe dynamic observer 165.10ns 160.889 1.03 325.41ns

Observable subscribe #2

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable subscribe lambda 84.96ns 94.5244 0.90 368.08ns
Dynamic observable subscribe lambda 153.31ns 191.306 0.80 420.81ns
Specific observable subscribe lambda without subscription 96.17ns 99.5599 0.97 378.29ns
Dynamic observable subscribe lambda without subscription 158.05ns 171.576 0.92 426.06ns
Specific observable subscribe specific subscriber 58.50ns 59.912 0.98 308.03ns
Dynamic observable subscribe specific subscriber 121.77ns 125.245 0.97 355.35ns
Specific observable subscribe dynamic observer 60.02ns 59.7736 1.00 303.13ns
Dynamic observable subscribe dynamic observer 110.91ns 121.637 0.91 317.98ns

Observer construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observer construction 0.39ns 0.402161 0.98 0.34ns
Dynamic observer construction 36.07ns 36.715 0.98 22.73ns
Specific observer construction + as_dynamic 36.78ns 37.8207 0.97 21.35ns

OnNext

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observer OnNext 0.38ns 0.395461 0.96 0.39ns
Dynamic observer OnNext 1.86ns 1.93921 0.96 2.23ns

Subscriber construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Make subsriber 41.78ns 39.3367 1.06 74.96ns
Make copy of subscriber 19.47ns 19.2646 1.01 5.07ns
Transform subsriber to dynamic 50.26ns 52.7742 0.95 28.73ns

Subscription

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
composite_subscription create 35.08ns 41.1478 0.85 68.90ns
composite_subscription add 49.68ns 53.952 0.92 115.51ns
composite_subscription unsubscribe 48.48ns 47.5545 1.02 25.22ns

buffer

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
buffer 291.02ns 309.186 0.94 2252.70ns
sending of values from observable via buffer to subscriber 7.07ns 7.57225 0.93 33.29ns

chains creation test

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
long non-state chain creation + subscribe 328.17ns 338.745 0.97 806.14ns
long stateful chain creation + subscribe 485.11ns 509.34 0.95 1280.32ns

combine_latest

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
combine_latest construction from observable via dot + subscribe 1080.61ns 1138.19 0.95 1240.75ns
sending of values from observable via combine_latest to subscriber 28.59ns 31.4043 0.91 2.44ns

concat

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
concat 2061.87ns 2219.74 0.93 3929.80ns
concat_with 2426.79ns 2728.14 0.89 4530.03ns

distinct_until_changed

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
distinct_until_changed construction from observable via dot + subscribe 156.59ns 153.268 1.02 423.80ns
sending of values from observable via distinct_until_changed to subscriber 4.53ns 4.66342 0.97 1.57ns

first

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
first construction from observable via dot + subscribe 183.95ns 185.885 0.99 768.52ns
sending of values from observable via first to subscriber 0.77ns 0.675016 1.15 1.10ns

foundamental sources

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
empty 100.09ns 97.9872 1.02 839.46ns
error 137.75ns 155.68 0.88 959.94ns
never 60.20ns 58.8645 1.02 319.71ns

from

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
from vector with int 125.44ns 121.328 1.03 887.41ns

immediate scheduler

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no any re-schedule 1.54ns 1.86468 0.82 136.70ns
re-schedule 10 times 25.15ns 24.2629 1.04 183.12ns

just

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
just send int 100.07ns 97.1205 1.03 935.87ns
just send variadic 131.84ns 162.127 0.81 931.53ns

last

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
last construction from observable via dot + subscribe 235.81ns 236.025 1.00 516.80ns
sending of values from observable via last to subscriber 3.22ns 3.12139 1.03 1.53ns

map

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
map construction from observable via dot + subscribe 100.78ns 120.922 0.83 377.75ns
sending of values from observable via map to subscriber 0.93ns 1.00532 0.92 3.08ns

merge

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
merge 1838.54ns 2099.6 0.88 3738.11ns
merge_with 2672.38ns 2479.69 1.08 4242.38ns

observe_on

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
observe_on construction from observable via dot + subscribe 503.93ns 504.209 1.00 3135.91ns
sending of values from observable via observe_on to subscriber 78.52ns 80.427 0.98 291.79ns

on_error_resume_next

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
on_error_resume_next construction from observable via dot + subscribe 19.43ns None . 24.69ns

publish_subject callbacks

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
on_next 25.27ns 24.8285 1.02 8.91ns
on_error 1.22ns 0.768567 1.58 18.19ns
on_completed 0.81ns 0.735215 1.11 0.76ns

publish_subject routines

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
construct 204.50ns 250.364 0.82 187.21ns
get_observable 31.48ns 35.5799 0.88 53.86ns
get_subscriber 66.06ns 63.2769 1.04 25.67ns

repeat

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
repeat construction from observable via dot + subscribe 4736.42ns 4743.37 1.00 3393.40ns

scan

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
scan construction from observable via dot + subscribe 160.95ns 149.535 1.08 473.15ns
sending of values from observable via scan to subscriber 2.90ns 3.11468 0.93 2.01ns

single-threaded locks

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no-lock increment 2.28ns 2.35915 0.97 .
mutex lock increment 20.19ns 21.1814 0.95 .
spin-lock increment 10.28ns 11.3064 0.91 .

skip

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
skip construction from observable via dot + subscribe 160.35ns 144.087 1.11 612.58ns
sending of values from observable via skip to subscriber 3.25ns 3.0669 1.06 2.82ns

switch_on_next

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
switch_on_next construction from observable via dot + subscribe 2647.16ns 2833.14 0.93 4755.71ns
sending of values from observable via switch_on_next to subscriber 632.36ns 680.504 0.93 1227.42ns

take

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take construction from observable via dot + subscribe 210.01ns 203.126 1.03 611.86ns
sending of values from observable via take to subscriber 3.98ns 4.44626 0.90 3.80ns

take_last

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take_last construction from observable via dot + subscribe 256.13ns 252.168 1.02 650.62ns
sending of values from observable via take_last to subscriber 3.64ns 3.55455 1.02 6.90ns

take_until

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take_until construction from observable via dot + subscribe 1227.52ns 1313.32 0.93 1755.36ns
sending of values from observable via take_until to subscriber 10.37ns 10.4385 0.99 1.98ns

trampoline scheduler

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no any re-schedule 25.72ns 26.3288 0.98 222.01ns
re-schedule 10 times 56.52ns 51.3394 1.10 217.43ns
recursively schedule 10 times 1752.61ns 1447.49 1.21 6920.02ns

window

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
window 2412.93ns 2569.84 0.94 3639.52ns
sending of values from observable via window to subscriber 610.32ns 702.488 0.87 428.70ns

with_latest_from

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
with_latest_from construction from observable via dot + subscribe 1219.53ns 1243.93 0.98 1590.56ns
sending of values from observable via with_latest_from to subscriber 29.62ns 30.9245 0.96 4.58ns

ci-windows

Observable construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable construction 1.77ns 1.98233 0.89 0.77ns
Dynamic observable construction 80.02ns 100.766 0.79 132.52ns
Specific observable construction + as_dynamic 98.67ns 108.763 0.91 130.74ns

Observable lift

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable lift specific observer 216.59ns 212.131 1.02 1402.32ns
Specific observable lift dynamic observer 197.30ns 249.142 0.79 1367.15ns
Dynamic observable lift specific observer 401.43ns 365.181 1.10 1479.37ns
Dynamic observable lift dynamic observer 267.27ns 392.584 0.68 1391.47ns

Observable subscribe

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable subscribe specific observer 158.76ns 166.914 0.95 1208.33ns
Specific observable subscribe dynamic observer 148.81ns 192.705 0.77 1230.50ns
Dynamic observable subscribe specific observer 245.25ns 314.559 0.78 1335.14ns
Dynamic observable subscribe dynamic observer 198.25ns 244.144 0.81 1404.27ns

Observable subscribe #2

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observable subscribe lambda 151.57ns 191.764 0.79 1295.57ns
Dynamic observable subscribe lambda 284.04ns 330.979 0.86 1407.43ns
Specific observable subscribe lambda without subscription 136.09ns 171.114 0.80 1200.41ns
Dynamic observable subscribe lambda without subscription 290.43ns 282.053 1.03 1425.48ns
Specific observable subscribe specific subscriber 52.42ns 60.5104 0.87 1016.10ns
Dynamic observable subscribe specific subscriber 179.89ns 259.51 0.69 1057.74ns
Specific observable subscribe dynamic observer 57.62ns 102.758 0.56 1008.77ns
Dynamic observable subscribe dynamic observer 103.84ns 136.388 0.76 1096.63ns

Observer construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observer construction 1.70ns 2.5842 0.66 1.80ns
Dynamic observer construction 81.59ns 102.888 0.79 127.62ns
Specific observer construction + as_dynamic 90.86ns 108.216 0.84 131.74ns

OnNext

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Specific observer OnNext 0.65ns 0.788848 0.82 0.65ns
Dynamic observer OnNext 2.01ns 2.4876 0.81 2.46ns

Subscriber construction

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
Make subsriber 83.37ns 107.174 0.78 352.78ns
Make copy of subscriber 15.37ns 17.1611 0.90 34.25ns
Transform subsriber to dynamic 92.67ns 114.724 0.81 145.52ns

Subscription

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
composite_subscription create 88.84ns 90.6095 0.98 348.81ns
composite_subscription add 83.00ns 102.615 0.81 174.43ns
composite_subscription unsubscribe 60.68ns 80.25 0.76 139.51ns

buffer

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
buffer 374.22ns 501.473 0.75 4803.00ns
sending of values from observable via buffer to subscriber 7.05ns 8.73102 0.81 115.05ns

chains creation test

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
long non-state chain creation + subscribe 328.91ns 340.676 0.97 1790.93ns
long stateful chain creation + subscribe 802.17ns 826.935 0.97 3386.50ns

combine_latest

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
combine_latest construction from observable via dot + subscribe 1675.92ns 2076.14 0.81 3149.62ns
sending of values from observable via combine_latest to subscriber 44.33ns 52.2632 0.85 4.29ns

concat

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
concat 3118.56ns 3495.44 0.89 10716.30ns
concat_with 4025.57ns 4423.14 0.91 18391.00ns

distinct_until_changed

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
distinct_until_changed construction from observable via dot + subscribe 197.54ns 298.655 0.66 1037.31ns
sending of values from observable via distinct_until_changed to subscriber 4.55ns 5.66218 0.80 3.71ns

first

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
first construction from observable via dot + subscribe 181.65ns 177.388 1.02 2919.70ns
sending of values from observable via first to subscriber 2.53ns 2.7755 0.91 1.11ns

foundamental sources

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
empty 88.97ns 101.955 0.87 2372.45ns
error 145.52ns 154.286 0.94 2593.27ns
never 56.28ns 58.8444 0.96 905.04ns

from

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
from vector with int 202.50ns 201.566 1.00 2616.64ns

immediate scheduler

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no any re-schedule 1.54ns 2.84814 0.54 479.41ns
re-schedule 10 times 120.54ns 133.847 0.90 523.44ns

just

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
just send int 95.58ns 126.776 0.75 2741.10ns
just send variadic 154.14ns 166.542 0.93 2602.70ns

last

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
last construction from observable via dot + subscribe 252.16ns 297.132 0.85 1549.67ns
sending of values from observable via last to subscriber 4.15ns 3.8261 1.08 3.81ns

map

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
map construction from observable via dot + subscribe 122.92ns 145.705 0.84 1025.24ns
sending of values from observable via map to subscriber 3.28ns 4.50056 0.73 6.76ns

merge

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
merge 2923.56ns 3113.89 0.94 11886.30ns
merge_with 3780.29ns 4243.57 0.89 13631.00ns

observe_on

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
observe_on construction from observable via dot + subscribe 712.50ns 766.206 0.93 6273.00ns
sending of values from observable via observe_on to subscriber 66.48ns 81.639 0.81 803.89ns

on_error_resume_next

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
on_error_resume_next construction from observable via dot + subscribe 21.58ns None . 105.29ns

publish_subject callbacks

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
on_next 21.85ns 25.4574 0.86 37.43ns
on_error 3.95ns 3.71271 1.06 18.63ns
on_completed 2.45ns 2.6572 0.92 0.69ns

publish_subject routines

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
construct 418.25ns 431.218 0.97 627.39ns
get_observable 30.33ns 34.0231 0.89 209.72ns
get_subscriber 66.72ns 62.8987 1.06 107.56ns

repeat

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
repeat construction from observable via dot + subscribe 7716.50ns 7584.25 1.02 11740.00ns

scan

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
scan construction from observable via dot + subscribe 204.43ns 253.25 0.81 2423.10ns
sending of values from observable via scan to subscriber 6.33ns 6.6724 0.95 9.05ns

single-threaded locks

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no-lock increment 2.63ns 3.15251 0.83 .
mutex lock increment 27.36ns 31.3011 0.87 .
spin-lock increment 11.13ns 13.3794 0.83 .

skip

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
skip construction from observable via dot + subscribe 204.28ns 226.746 0.90 1559.88ns
sending of values from observable via skip to subscriber 5.05ns 5.62816 0.90 3.69ns

switch_on_next

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
switch_on_next construction from observable via dot + subscribe 3539.57ns 4158.57 0.85 13362.30ns
sending of values from observable via switch_on_next to subscriber 929.35ns 1030.96 0.90 3416.56ns

take

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take construction from observable via dot + subscribe 286.20ns 302.338 0.95 2588.73ns
sending of values from observable via take to subscriber 6.21ns 6.81954 0.91 6.67ns

take_last

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take_last construction from observable via dot + subscribe 400.43ns 420.82 0.95 2518.82ns
sending of values from observable via take_last to subscriber 5.10ns 5.58293 0.91 23.95ns

take_until

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
take_until construction from observable via dot + subscribe 1913.46ns 1954.5 0.98 6118.20ns
sending of values from observable via take_until to subscriber 13.55ns 15.2222 0.89 5.51ns

trampoline scheduler

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
no any re-schedule 18.41ns 22.1731 0.83 728.97ns
re-schedule 10 times 143.35ns 136.367 1.05 761.95ns
recursively schedule 10 times 2877.67ns 3374.67 0.85 22174.00ns

window

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
window 3253.12ns 3517.0 0.92 10896.70ns
sending of values from observable via window to subscriber 1133.50ns 1043.17 1.09 1832.81ns

with_latest_from

Table
Test Name Current, ns Prev, ns Ratio RxCpp current, ns
with_latest_from construction from observable via dot + subscribe 1969.80ns 2305.64 0.85 4415.00ns
sending of values from observable via with_latest_from to subscriber 40.05ns 42.3012 0.95 7.76ns

@AlexInLog

AlexInLog commented Oct 10, 2022

Copy link
Copy Markdown
Owner

@victimsnino The office ReactiveX doc names the operator catch(), and RxCpp names it on_error_resume_next(). Shall we just use catch() for consistent naming with the doc?

I offer to provide aliases for both ways to follow ReactiveX and RxCpp and the same time

UPD: not sure if it is possible to create function with name "catch" due to it should be reserved for try-catch keywords

@tcw165

tcw165 commented Oct 11, 2022

Copy link
Copy Markdown
Contributor Author

I see. That makes sense. Let's keep using on_error_resume_next() though.

@tcw165 tcw165 force-pushed the op/resume_on_error branch 2 times, most recently from 9ba6ab6 to 8143ad4 Compare October 11, 2022 05:12
Comment thread src/rpp/rpp/operators/on_error_resume_next.hpp Outdated
Comment thread src/rpp/rpp/operators/on_error_resume_next.hpp Outdated
Comment thread src/rpp/rpp/operators/fwd/on_error_resume_next.hpp Outdated
Comment thread src/rpp/rpp/operators/on_error_resume_next.hpp Outdated
@tcw165 tcw165 force-pushed the op/resume_on_error branch from 7490e25 to 0081136 Compare October 12, 2022 06:03
@tcw165 tcw165 force-pushed the op/resume_on_error branch from 0081136 to dddd300 Compare October 12, 2022 06:34
Comment thread src/rpp/rpp/operators/fwd/on_error_resume_next.hpp Outdated
Comment thread src/rpp/rpp/operators/fwd/on_error_resume_next.hpp Outdated
Comment thread src/rpp/rpp/operators/on_error_resume_next.hpp Outdated
Comment thread src/rpp/rpp/operators/on_error_resume_next.hpp Outdated
Comment thread src/tests/test_on_error_resume_next.cpp
@tcw165 tcw165 requested a review from AlexInLog October 12, 2022 19:28
Comment thread src/rpp/rpp/operators/on_error_resume_next.hpp Outdated
@sonarqubecloud

Copy link
Copy Markdown

Kudos, SonarCloud Quality Gate passed!    Quality Gate passed

Bug A 0 Bugs
Vulnerability A 0 Vulnerabilities
Security Hotspot A 0 Security Hotspots
Code Smell A 1 Code Smell

0.0% 0.0% Coverage
0.0% 0.0% Duplication

@AlexInLog AlexInLog merged commit b8e1715 into AlexInLog:main Oct 12, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants